
package com.jingyanzi.finance.service;

import com.jingyanzi.finance.domain.CashBillDO;
import com.jingyanzi.finance.query.CashBillQueryDO;
import com.jingyanzi.finance.result.ResultDO;
/**
 * 
* <b>Description:实现对账单的管理，账单的收银处理，同时将数据同步到相应的业务系统当中</b><br> 
* @author Reading.Reagan</a>
* @version 1.0
* @Note
* <b>ProjectName:</b> finance-api
* <br><b>PackageName:</b> com.jingyanzi.finance.service
* <br><b>ClassName:</b> IBillService
* <br><b>Date:</b> 2018年7月11日 下午4:36:48
 */
public interface IBillService {

	/**
	* <b>Description: 添加支付账单，成功返回true 失败返回false</b><br> 
	* @param domain 账单DO对象
	* @return
	* ResultDO 
	* @Note
	* <b>Author:</b> Reading.Reagan
	* <br><b>Date:</b> 2018年7月11日 下午4:46:49
	* <br><b>Version:</b> 1.0
	 */
	public ResultDO add(CashBillDO domain);
	
	
	public ResultDO modifi(CashBillDO domain);
	
	/**
	* <b>Description:收银支付确认，成功返回true 失败返回false 在这里还要调用其它业务系统的接口进行数据同步，并记录支付日志</b><br> 
	* @param domain 账单DO对象
	* @return
	* ResultDO 
	* @Note
	* <b>Author:</b> Reading.Reagan
	* <br><b>Date:</b> 2018年7月11日 下午4:48:38
	* <br><b>Version:</b> 1.0
	 */
	public ResultDO pay(CashBillDO domain);
	
	public ResultDO remove(Integer id);
	
	/**
	 * 
	* <b>Description:通过订单的ID删除对于得账单信息</b><br> 
	* @param orderId 订单的ID（一个订单ID对于多个销售ID）
	* @return
	* ResultDO 成功为TRUE 失败为FALSE
	* @Note
	* <b>Author:</b> Reading.Reagan
	* <br><b>Date:</b> 2018年7月24日 上午10:26:33
	* <br><b>Version:</b> 1.0
	 */
	public ResultDO removeForOrderId(Integer orderId);
	
	/**
	* <b>Description:返回账单详情 返回true 从ResultDO中获取数据对象，失败false 数据对象为null</b><br> 
	* @param id 账单ID
	* @param cashierId 收银员ID
	* @return
	* ResultDO 
	* @Note
	* <b>Author:</b> Reading.Reagan
	* <br><b>Date:</b> 2018年7月11日 下午4:50:15
	* <br><b>Version:</b> 1.0
	 */
	public ResultDO get(Integer id, Integer cashierId);
	
	/**
	* <b>Description:查询账单 query.isPage 设置true为分页方式 设置false为不分页方式</b><br> 
	* @param query 查询对象
	* @return
	* ResultDO 
	* @Note
	* <b>Author:</b> Reading.Reagan
	* <br><b>Date:</b> 2018年7月11日 下午4:52:09
	* <br><b>Version:</b> 1.0
	 */
	public ResultDO query(CashBillQueryDO query);
}
